package delphorm.web.aspect;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;

import org.springframework.aop.MethodBeforeAdvice;

import delphorm.entite.questionnaire.Questionnaire;
import delphorm.service.questionnaire.IQuestionnaire;


public class VerifParamsAjouterQuestionnaireSession implements MethodBeforeAdvice
{
	IQuestionnaire serviceQuestionnaire;
	
	public void before(Method method, Object[] arguments, Object target) 
	throws Throwable {
		
		HttpServletRequest request = (HttpServletRequest)arguments[0];
		
		//verif de idquestionnaire
		String idQStr = request.getParameter("idquestionnaire");
		long idQ;
		if(idQStr != null)
		{
			try {
				idQ = Long.parseLong(idQStr);
			} catch (NumberFormatException e) {
				throw new delphorm.web.exception.ParametreException("parametre.mauvaisformat","idquestionnaire");
			}		
			
			//vérifie que le questionnaire existe
			Questionnaire questionnaire = serviceQuestionnaire.getQuestionnaireParId(new Long(idQ));
			if(questionnaire==null)
				throw new delphorm.web.exception.ParametreException("parametre.invalide","idquestionnaire");
			
			//verif la non présence de nouveau
			String nouveau = request.getParameter("nouveau");
			if(nouveau != null)
				throw new delphorm.web.exception.ParametreException("parametre.invalide","nouveau");
		}
		else		
		{
			//verif de nouveau
			String nouveau = request.getParameter("nouveau");
			if(nouveau != null && !nouveau.equals("oui"))
			{
				throw new delphorm.web.exception.ParametreException("parametre.mauvaisformat","nouveau");
			}	
		}
	}
	
}
